java中的Double型加减乘除 - 点点滴滴的积累 - ITeye技术网站
创建时间:
2015/12/21 13:34
标签:
1
来源:
http://gigixin.iteye.com/blog/670619
Java代码
import
java.math.BigDecimal;
public
class
Arith {
private
static
final
int
DEF_DIV_SCALE =
10
;
/**
* * 两个Double数相加 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public
static
Double add(Double v1, Double v2) {
BigDecimal b1 =
new
BigDecimal(v1.toString());
BigDecimal b2 =
new
BigDecimal(v2.toString());
return
new
Double(b1.add(b2).doubleValue());
}
/**
* * 两个Double数相减 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public
static
Double sub(Double v1, Double v2) {
BigDecimal b1 =
new
BigDecimal(v1.toString());
BigDecimal b2 =
new
BigDecimal(v2.toString());
return
new
Double(b1.subtract(b2).doubleValue());
}
/**
* * 两个Double数相乘 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public
static
Double mul(Double v1, Double v2) {
BigDecimal b1 =
new
BigDecimal(v1.toString());
BigDecimal b2 =
new
BigDecimal(v2.toString());
return
new
Double(b1.multiply(b2).doubleValue());
}
/**
* * 两个Double数相除 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public
static
Double div(Double v1, Double v2) {
BigDecimal b1 =
new
BigDecimal(v1.toString());
BigDecimal b2 =
new
BigDecimal(v2.toString());
return
new
Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
/**
* * 两个Double数相除,并保留scale位小数 *
*
* @param v1 *
* @param v2 *
* @param scale *
* @return Double
*/
public
static
Double div(Double v1, Double v2,
int
scale) {
if
(scale <
0
) {
throw
new
IllegalArgumentException(
"The scale must be a positive integer or zero"
);
}
BigDecimal b1 =
new
BigDecimal(v1.toString());
BigDecimal b2 =
new
BigDecimal(v2.toString());
return
new
Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}